AlteryxでExcelファイルを読み込む時の処理時間とシート数の関係
こんにちは、小澤です。
Alteryxでは入力データとしてExcelファイルを利用できます。 この際の手順として、
- Input DataツールでExcelファイルを選択
- ポップアップで読み込み対象のシートを選択
という流れになります。 読み込み対象は1つのシートのみとなる(複数読み込む場合はDynamic Inputを利用)のですが、 Excelファイル内には対象以外にも複数シートがある状況というのはよくあることでしょう。
データ分析において、読み込み対象をいかにして必要なもののみに絞り込むかは処理時間に大きく影響します。 今回は、そんな不要なExcelのシート数とInput Dataの処理速度の関係を見ていきましょう。
xlsファイルとxlsxファイル
さて、Excelのファイルはフォーマットの異なる2つのファイルがあります。 古いバージョンで利用されていたxlsファイルと現在使われているxlsxファイルです(マクロを利用している場合拡張子が変わりますが、こちらは割愛します)。
結果を言ってしまうと、実はこの2つの種類のファイルで傾向が異なります。 そのため、この2種類のファイルで処理速度を測定してみましょう。
処理時間を測定する
測定の利用する機能
さて、どのように処理速度の測定を行うかという部分ですが今回は以下の2つの機能を利用します。
- Performance Profilling
- Batch Macro
Performance Profillingはツールごとの処理時間を測定するための機能です。 Workflowの設定からRuntimeタブを選択し、Enable Preformace Profillingにチェックを入れます。
この状態でワークフローを実行すると以下のように各ツールの実行時間とワークフロー全体の中で何割を占めるかの情報がResultsに表示されます。
続いてもう1つ使うBatch Macroですが、これはループ処理をさせるような際に利用ツールです。 ツールの処理時間は常に一定というわけではなく誤差が入ったりするものなので、Batch Macroを利用して同じ処理を複数回実行してその平均値をとるようにしています。
先ほどのPerformance Profillingの利用したRuntimeタブにある、Show All Macro Messagesにチェックを入れることで、 マクロ内の処理のメッセージもResultsに含まれるようになります。 これにはProfillingの処理も含まれていますので、マクロ内で利用したInput Dataツールの処理時間も表示されるようになります。
測定方法
今回は以下のような方法で測定しています。
- シート数が10〜100のあいだで10きざみの10ファイルを用意する
- それぞれのファイルに対して任意の1シートを読み込むBatch Macroを作成
- そのマクロを利用して10回ファイルを読み込むワークフローを作成
- Performance Profillingの結果からInput Dataツールの処理時間を取得
- 各Excelファイルごとに10回の平均時間を計算
- それをプロットする
これをxlsファイルでシート数が10, 20, ...,10, xlsxファイルでシート数10, 20, ...,100とやっていくので全部200個の測定値と20個の平均値が求められます。
測定結果
さて、いよいよ結果を見ていきましょう。 以下のようになりました。
横軸がExcelファイルのシート数、縦軸が10回の平均処理時間です。
この結果を見ていただくと、
- xlsファイルはシート数にかかわらず常に一定
- xlsxファイルはシート数が増えるに従って処理時間も増加する
- シート数が少ない時の処理時間は xlsx < xls
- 処理速度が逆転するのが100シート弱のあたり
という様子が伺えます。 xlsxファイルえぇ...という気もしますが、処理速度が逆転するほどのシート数になるようなExcelファイルはあまりないでしょう。
おわりに
今回はAlteryxでExcelファイルを読み込む際の処理時間を計測してみました。 AlteryxのPerformance Profilling機能を使えば、このようにツール単位での処理時間の計測が可能になるため、ワークフローの最適化などの際に役立ちます。
Alteryxロードショーとワークショップを開催します
2018年7月26日(木)にAlteryxロードショーとワークショップを開催します。すでにAlteryxをご活用中のお客様はもちろん、導入を検討している方、国内外におけるデータ分析の最新情報を知りたい方にもおすすめです。ぜひ、この機会にAlteryxの利便性を実感してください。